# $(BIN) est la nom du binaire généré
BIN = libitd.a
BINDYN = libitd.so
# FLAG
FLAGS = -Wall -fPIC -g
# INCLUDES
INC = include/
# LIB DIR FINALE
LIBFIN = ../
# INCLUDES
LIBDIR = .
# Librairies
LIBS = -lGL -lGLU -lm -lSDL -lSDL_image
# Compilateur
CC = gcc
# Pour la librairie statique
AR = ar rcs
# SOURCES
SRC = src/
SRC_FILES = $(shell find $(SRC) -type f -name '*.c')
# OBJETS
OBJ = obj/
OBJ_FILES = $(patsubst $(SRC)%.c, $(OBJ)%.o, $(SRC_FILES))

# all est la première règle à être exécutée car elle est la première
# dans le fichier Makefile. Notons que les dépendances peuvent être
# remplacées par une variable, ainsi que n'importe quel chaine de
# caractères des commandes
all: $(OBJ_FILES)
	@echo "**** PHASE DE LIEN ****"
	$(CC) -L$(LIBDIR) $(LIBS) $(OBJ_FILES) -fPIC -shared -o $(LIBFIN)/$(BINDYN)

static: $(OBJ_FILES)
	@echo "**** PHASE DE LIEN ****"
	$(AR) $(LIBFIN)/$(BIN) $(OBJ_FILES)

$(OBJ)%.o: $(SRC)%.c $(INC)%.h
	@echo "**** $@ ****"
	@mkdir -p $(@D)
	$(CC) -I$(INC) $(FLAGS) -c $< -o $@

install: $(OBJ_FILES) all
	cp $(LIBFIN)/$(BIN) /usr/lib/

clean:
	rm -f $(OBJ)*.o
	find . -name "*~" -exec rm {} \;

bigclean:
	rm -f $(OBJ)*.o $(SRC)*~ $(INC)*~ $(LIBFIN)/$(BIN) $(LIBFIN)/$(BINDYN)
	find . -name "*~" -exec rm {} \;